C/C++ - 将文件中的字符存储到 2d 字符数组中
C/C++ - Storing characters from file into a 2d char array
我正在尝试将文件中的字母字符存储在二维数组中,在我完成第一行的最后一个单词后,我想转到下一行并做同样的事情。(我假设我的文本中有 4 行)。
这是我的代码:
void getPoem(char *filePath){
ifstream f(filePath);
int NumberOfRows=0;
int NumberOfColumns=-1;
int NumberOfColumns_Clone=-1;
char matrix[100][100]={0};
char s[100];
do{
f.getline(s, 100, 'n');
for(int i=strlen(s)-1;i>=0;i--)
if(isalpha(s[i]))
matrix[NumberOfRows][++NumberOfColumns]=s[i];
matrix[NumberOfRows][++NumberOfColumns]=NULL;
NumberOfColumns--;
NumberOfColumns_Clone=NumberOfColumns; // I used this so i don't lose the nr_of_columns
NumberOfColumns=0;
NumberOfRows++;
matrix[NumberOfRows][NumberOfColumns]=' ';
}
while(NumberOfRows<4);
for (int i = 0; i<=NumberOfRows; i++){
for (int j = 0; j<=NumberOfColumns_Clone; j++)
cout << matrix[i][j] << " ";
cout << endl;
}
cout << endl;
}
我的输出很糟糕,当我打印它时,它会永远消失,我的程序会发出哔哔声。我知道这很糟糕,我只想知道我哪里做错了。
我不想使用"字符串",这就是我在"char"上挣扎的原因。
任何帮助将不胜感激。非常感谢!
NumberOfColumns
和NumberOfColumns_Clone
是循环中的简单变量:在循环结束时,您有上次迭代的值,并且所有先前的值都将丢失。
您可以 :
-
将
NumberOfColumns_Clone
更改为数组并保持每行的大小int NumberOfColumns_Clone[100]; ... NumberOfColumns_Clone[NumberOfRows]=NumberOfColumns; // I used this so i don't lose the nr_of_columns ... for (int i = 0; i<=NumberOfRows; i++){ for (int j = 0; j<=NumberOfColumns_Clone[i]; j++) cout << matrix[i][j] << " "; cout << endl; }
-
或使用 null 作为分隔符
for (int i = 0; i<=NumberOfRows; i++){ for (int j = 0; j<=NumberOfColumns_Clone[i]; j++) { if (matrix[i][j] = 0) break; // exit from inner loop on terminating null cout << matrix[i][j] << " "; } cout << endl; }
我重写了这个函数...希望对您有所帮助!
void getPoem(char *filePath)
{
ifstream f(filePath);
int numberOfRows=0;
int numberOfColumns=0;
char matrix[100][100];
char s[100];
int i;
do
{
f.getline(s,100);
for(i=0;i<strlen(s);i++)
if(isalpha(s[i]))
{
matrix[numberOfRows][numberOfColumns++]=s[i];
}
numberOfRows++;
numberOfColumns=0;
}while(numberOfRows<4);
int j;
for(i=0;i<numberOfRows;i++)
{
for(j=0;j<100;j++)
{
cout<<matrix[i][j];
}
cout<<endl;
}
}
为了帮助你一点,我会写下你犯了什么错误:
警告:"char [100]"的初始值设定项周围缺少大括号 [-缺少大括号]
警告:从 NULL 转换为非指针类型"char" [-Wconversion-null]
是简单的警告,但请确保它们会影响您的结果。
相关文章:
- 使用无符号字符数组有效存储内存
- 在 std::无符号字符的向量处存储 int 的十六进制表示形式
- 我的目标是编写一个程序来计算和存储字符串在字符数组中出现的位置
- 将无符号字符的向量存储在数组中会给我 std::bad_alloc
- 按字母顺序打印存储在字符数组中的信息
- std::bad_alloc 将文本文件中的单个字符存储到矢量C++中时
- 如何使用 std::cin 将字符 ú 存储在字符数组中?
- 将 Unicode 字符存储在.txt文件中的新行中
- 将字符存储在C 树中
- 如何将常量字符*存储到字符*
- C/C++ - 将文件中的字符存储到 2d 字符数组中
- Pep/8 汇编 - 将字符存储在变量中而不输入
- 如何解析用户的输入并将每个单独的字符存储为字符串
- 将字符存储在用字符串初始化的字符指针中
- std::string是否需要将其字符存储在连续的内存中?< / h1 >
- 将字符串的每个字符存储到数组中(c++)
- 将单个字符存储到队列<string>:错误
- 用c++将无符号字符存储为二进制文件
- 将Ascii字符存储在c++中的数组中
- 如何读取西班牙语编码的文件并逐个字符存储