[英]Pointers and Strings relation
我試圖通過反復試驗來理解指針和字符串之間的關系,我試圖運行這個程序,但是它沒有錯誤,但是當我輸入文件時
char *file_name;
printf("Enter the name of the file:");
gets(file_name);
printf("the file name is: %s",file_name);
指針
char *file_name;
未初始化並且具有不確定的值。 所以下面的說法
gets(file_name);
調用未定義的行為。
此外,函數gets
不是標准的C 函數,它是不安全的。
您需要做的是分配一塊內存,您將在其中讀取文件名並使用標准 C 函數fgets
而不是 get。
例如
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//…
size_t n = 100;
char *file_name = malloc( n );
fgets( file_name, n, stdin );
file_name[ strcspn( file_name, "\n" ) ] = '\0';
printf("the file name is: %s\n",file_name);
//…
free( file_name );
//...
這個說法
file_name[ strcspn( file_name, "\n" ) ] = '\0';
需要排除可以由函數fgets
附加到輸入字符串的換行符'\\n'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.